package util;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @ClassName Test1
 * @description:
 * @author: 荣燊
 * @create: 2022-04-12 16:41
 **/
public class Test1 {
//    public static void main(String[] args) throws IOException {
//        StringBuffer buffer = new StringBuffer();
//        BufferedReader bf= new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\testMarkdown\\springcloud-alibaba之sentinel流量控制、熔断降级、系统负载.md"));
//        String s = null;
//        while((s = bf.readLine())!=null){//使用readLine方法，一次读一行
//            buffer.append(s.trim());
//        }
//        String xml = buffer.toString();
//        // 打印读取到的内容
//        System.out.println("----------------源文档---------------");
//        System.out.println(xml);
//        System.out.println("----------------开始匹配url---------------");
//        // 匹配url
//        String filterSpecialStr = filterSpecialStr(xml);
//        System.out.println("匹配结果："+filterSpecialStr);
//        // 开始替换
//        System.out.println("----------------开始替换url---------------");
//
//        System.out.println("--------------替换后------------------");
//        System.out.println(xml);
//    }

    public static void main(String[] args) throws IOException {
        StringBuffer buffer = new StringBuffer();
        BufferedReader bf= new BufferedReader(
                new FileReader("C:\\Users\\Administrator\\Desktop\\testMarkdown\\《一秒钟》.md"));
        String s = null;
        while((s = bf.readLine())!=null){//使用readLine方法，一次读一行
            buffer.append(s.trim());
        }
        String xml = buffer.toString();
        // 打印读取到的内容
        System.out.println("----------------源文档---------------");
        System.out.println(xml);
        //
        String res = transformURLIntoLinks(xml);
        System.out.println(res);
    }

    /**
     * regex:我们的正则字符串
     * 参数2 就是一大段文本，这里用data表示
     */
    private static String filterSpecialStr(String data) {
        String regex = "(https?|http|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]";
        //sb存放正则匹配的结果
        StringBuffer sb = new StringBuffer();
        //编译正则字符串
        Pattern p = Pattern.compile(regex);
        //利用正则去匹配
        Matcher matcher = p.matcher(data);
        //如果找到了我们正则里要的东西
        while (matcher.find()) {
            //保存到sb中，"\r\n"表示找到一个放一行，就是换行
            sb.append(matcher.group() + "\r\n");
        }
        return sb.toString();
    }

    //替换
    public static String transformURLIntoLinks(String text){
        String urlValidationRegex = "(https?|ftp)://(www\\d?|[a-zA-Z0-9]+)?.[a-zA-Z0-9-]+(\\:|.)([a-zA-Z0-9.]+|(\\d+)?)([/?:].*)?";
        Pattern p = Pattern.compile(urlValidationRegex);
        Matcher m = p.matcher(text);
        StringBuffer sb = new StringBuffer();
        while(m.find()){
            String found = m.group(0);
            m.appendReplacement(sb, "<a href='"+found+"'>"+found+"</a>");
        }
        m.appendTail(sb);
        return sb.toString();
    }
}
